package clases;

import java.sql.*;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.text.SimpleDateFormat;

/**
 * @web http://www.hcomputacion.com
 * @author Pablo J. Heurtley
 * @version pre-alpha 0.01
 */
public class Cheques 
{
    Statement stm;
    PreparedStatement pstmt;
    ResultSet rs;
    ResultSetMetaData metaData;
    int columnas = 0;
    public void AgregarCheque(String numero, String fvencimiento, String monto, String nombre, String fingreso)
    {
        ConexionMySQL conexion = new ConexionMySQL();
        try 
        {
            stm = conexion.conexion.createStatement();
        } 
        catch (SQLException ex) 
        {
            System.out.println(ex);
        }
        try 
        {
            stm.executeUpdate("INSERT INTO "+Config.Tabla+" (numero,fvencimiento,monto,nombre,fingreso) VALUES('"+numero+"','"+fvencimiento+"','"+monto+"','"+nombre+"','"+fingreso+"')");
        } 
        catch (SQLException ex) 
        {
            System.out.println(ex);
        }
        
    }
    public void AgregarCheque(String femision, String fechahora)
    {
        ConexionMySQL conexion = new ConexionMySQL();
        try 
        {
            stm = conexion.conexion.createStatement();
        } 
        catch (SQLException ex) 
        {
            System.out.println(ex);
        }
        try 
        {
            stm.executeUpdate("INSERT INTO "+Config.Tabla+" (nombre) VALUES('pablo')");
            stm.executeUpdate("INSERT INTO "+Config.Tabla+" (femision,fmovimiento) VALUES('"+femision+"','"+fechahora+"')");
        } 
        catch (SQLException ex) 
        {
            System.out.println(ex);
        }
        
    }
    public void NuevoCheque (String nombre, String apellido, String numcheque, String cuit, String monto, String femision, String fvencimiento, String fmovimiento, String estado, String tipo)
    {
        ConexionMySQL conexion = new ConexionMySQL();
        try 
        {
            stm = conexion.conexion.createStatement();
        } 
        catch (SQLException ex) 
        {
            System.out.println(ex);
        }
        try 
        {
            stm.executeUpdate("INSERT INTO "+Config.Tabla+" (nombre,apellido,numcheque,cuit,monto,femision,fvencimiento,fmovimiento,estado,tipo) VALUES('"+nombre+"','"+apellido+"','"+numcheque+"','"+cuit+"','"+monto+"','"+femision+"','"+fvencimiento+"','"+fmovimiento+"','"+estado+"','"+tipo+"')");
        } 
        catch (SQLException ex) 
        {
            System.out.println(ex);
        }
    }
    public void ModificarCheque(Object ide, java.util.Date fechaE, Object monto, Object nombre, Object apellido, Object cuit, Object numero, java.util.Date fechaV)
    {
        ConexionMySQL conexion = new ConexionMySQL();
        
        try 
        {
            stm = conexion.conexion.createStatement();
        } 
        catch (SQLException ex) 
        {
            System.out.println(ex);
        }
        try 
        {
            SimpleDateFormat formato = new SimpleDateFormat("yyyy-MM-dd");
            pstmt = conexion.conexion.prepareStatement("UPDATE "+Config.Tabla+" SET femision=? , monto=? , nombre=? , apellido=? , cuit=? , numcheque=? , fvencimiento=? WHERE id='"+ide+"'");
            pstmt.setString(1, (formato.format(fechaE)));
            pstmt.setObject(2, monto);
            pstmt.setObject(3, nombre);
            pstmt.setObject(4, apellido);
            pstmt.setObject(5, cuit);
            pstmt.setObject(6, numero);
            pstmt.setString(7, (formato.format(fechaV)));
            pstmt.executeUpdate();
        } 
        catch (SQLException ex) 
        {
            System.out.println(ex);
        }
    }
    public void BorrarCheque(int ide)
    {
        ConexionMySQL conexion = new ConexionMySQL();
        try 
        {
            stm = conexion.conexion.createStatement();
        } 
        catch (SQLException ex) 
        {
            System.out.println(ex);
        }
        try 
        {
            stm.executeUpdate("DELETE FROM "+Config.Tabla+" WHERE id='"+ide+"'");
        } 
        catch (SQLException ex) 
        {
            System.out.println(ex);
        }
    }
    public void BuscarCheque()
    {
        
    }
    public void TransferirCheque(java.util.Date desde, java.util.Date hasta) throws SQLException
    {
        //La transferencia de los cheques debe guardar los datos en una segunda base de datos, con fecha y hora de la transferecia para poder realizar
        //la recuperacion de los cheques en caso de ser necesario.
        //Lo ideal seria guardarlo en una segunda tabla dentro de la base principal como puede ser transferencias.
        ConexionMySQL conexion = new ConexionMySQL();
        try 
        {
            stm = conexion.conexion.createStatement();
        } 
        catch (SQLException ex) 
        {
            
        }
        
        try 
        {
            SimpleDateFormat formato = new SimpleDateFormat("yyyy-MM-dd");
            
            String querry ="SELECT * FROM "+Config.Tabla+" WHERE fmovimiento BETWEEN "+(formato.format(desde))+" AND "+(formato.format(hasta));
            System.out.println(querry);
//            rs = stm.executeQuery("SELECT * FROM "+Config.Tabla+" WHERE fmovimiento BETWEEN '"+desde+"' AND '"+hasta+"'");
            
            pstmt = conexion.conexion.prepareStatement("SELECT * FROM "+Config.Tabla+" WHERE fmovimiento BETWEEN ? AND ?");
            pstmt.setString(1, (formato.format(desde)));
            pstmt.setString(2, (formato.format(hasta)));
            rs = pstmt.executeQuery();
            pstmt.execute();
        } 
        catch (SQLException ex) 
        {

        }
        
//        for (int i = 1; i <= columnas; i++)
//        {
//            modelo.addColumn(metaData.getColumnLabel(i));
//        }
        
        while (rs.next())
        {
//            //Codigo para copiar los datos a la tabla de Transferencias y a la tabla General.
            int columnas = 11;
            Object[] fila = new Object[columnas];
            for (int i = 1; i <= columnas; i++)
            {
                fila[i-1]=rs.getObject(i);
                System.out.println(fila[i-1]);
            }
            System.out.println(fila);
            pstmt = conexion.conexion.prepareStatement("INSERT INTO transferencias (idc,nombre,apellido,numcheque,cuit,monto,femision,fvencimiento,tipo,fmovimiento,estado,registro,origen) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?)");
            for (int i = 1; i <= 11; i++)
            {
                pstmt.setString(i,fila[i-1].toString());
                
            }
            String fechahora = Funciones.fechaActual() +" "+ Funciones.horaActual();
            pstmt.setString(12, fechahora);            
            pstmt.setString(13, Config.Tabla);
            pstmt.execute();
            stm.executeUpdate("DELETE FROM "+Config.Tabla+" WHERE id='"+fila[0].toString()+"'");
            
            
            pstmt = conexion.conexion.prepareStatement("INSERT INTO mdq (idc,nombre,apellido,numcheque,cuit,monto,femision,fvencimiento,tipo,fmovimiento,estado,registro,origen) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?)");
            for (int i = 1; i <= 11; i++)
            {
                pstmt.setString(i,fila[i-1].toString());
                
            }
            pstmt.setString(12, fechahora);            
            pstmt.setString(13, Config.Tabla);
            pstmt.execute();
        }
        rs.close();
        stm.close();
    }
    public void ejecutarquerry(Date femision)
    {
        ConexionMySQL conexion = new ConexionMySQL();
        try 
        {
            stm = conexion.conexion.createStatement();
        } 
        catch (SQLException ex) 
        {
            System.out.println(ex);
        }
        try 
        {
            stm.executeUpdate("INSERT INTO "+Config.Tabla+" (femision) VALUES(femision)");
        } 
        catch (SQLException ex) 
        {
            System.out.println(ex);
        }
    }
}
